Digital video data is compressed for many applications. Transmission over limited bandwidth channels such as direct broadcast satellite (DBS) and storage on optical media (i.e., CD, DVD, etc.) are typical examples. In order to achieve efficient compression, complex, computationally intensive processes are used for encoding (or compressing) and decoding (or decompressing) the digital video data. One conventional standard for compressing video is MPEG-2. However, other compression standards, such as H.264, are being developed. H.264 compression obtains high efficiency in compression. H.264 compression uses only 50-60% of the bit rate used by MPEG-2 compression to provide the same quality of video.
Video data compression methods use some form of entropy coding. Motion vectors and other overhead such as transform coefficients are compressed using entropy coding. There are many types of well known entropy coding techniques, including Huffman coding and Context-based Adaptive Binary Arithmetic Coding (CABAC). For example, MPEG-2 uses Huffman encoding, whereas H.264 supports both Huffman and CABAC encoding. While CABAC is more efficient than Huffman encoding, CABAC uses significantly more processing power. This is particularly true for a real-time encoder or decoder that processes each picture in a bounded amount of time.
CABAC encoding and decoding is a multi-step, serial process. It is difficult to speed up the CABAC encoding and decoding process with parallel hardware. In high definition video, an entire second of compressed video data can be concentrated in one frame (i.e., one-thirtieth of a second). When the compressed video data is concentrated in one frame, the bit rate of the one second of compressed data is uneven. An uneven bit rate can make CABAC encoding and decoding difficult.
One conventional approach to the problem includes running the encoding/decoding hardware at a high frequency to handle the uneven bit rate problem. Disadvantages of the conventional approaches include high power consumption associated with high speed hardware. Also, frames can be dropped if the processing hardware cannot handle the data burst. High power devices are often not suitable for consumer products. In order to achieve the increased compression offered by CABAC, many sophisticated, processing intensive tools are used. Additionally, the hardware for encoding and decoding can be very complicated if parallel processing structures are implemented.
Conventional approaches transcode between different video formats to first decode the bitstream to get baseband video. The video is then re-encoded into the new format. Conventional approaches use many methods to reduce the complexity of the re-encoding by re-using syntax elements from the decoded video to aid the re-encoding of the video.
Unlike other conventional video standards that contained only one entropy coding solution, the H.264 standard allows transcoding a context adaptive variable length coded (CAVLC) entropy-encoded H.264 video stream to make a context adaptive binary arithmetic coded (CABAC) entropy-encoded H.264 video stream by entropy-decoding the CAVLC stream to get the syntax element values. The syntax element values are entropy-encoded with the CABAC method of entropy coding.
Since such conventional transcoding does not use a complete H.264 decode and H.264 re-encode, the transcoding from CAVLC to CABAC can be done very cheaply (or inexpensively). The cheap transcoding method for CAVLC-to-CABAC is only possible because CABAC is capable of directly representing all values of all syntax elements in a CAVLC bitstream. However, the same property does not hold when attempting to transcode a CABAC stream to produce a CAVLC stream because, in the standard ITU-T Rec. H.2641|ISO/IEC 14496-10 AVC (aka H.264), CABAC is capable of representing 15 and 16-bit quantized coefficient values while CAVLC can represent only up to 12.3-bit quantized coefficient values.
It would be desirable to provide a method for encoding and/or decoding a compressed video stream that uses an entropy encoding method in a manner that is well suited for low-cost, low-power, and/or real-time devices.